메서드를 호출하기 전에는 굳이 지역 변수를 초기화하지 않고 호출한 메서드에서 전달한 값을 받아서 사용해야 하는 경우가 있습니다. 이런 경우에는 out 키워드를 사용하여 반환형 매개 변수 전달 방식을 사용할 수 있습니다. 다음 내용을 입력한 뒤 실행해보세요.

<코드> ParameterOut.cs

//[?] out 키워드로 반환형 매개 변수 전달 방식 함수 만들기

using System;

 

class ParameterOut

{

    static void Do(out int num)

    {

        num = 1234; // [B] ref 동일: 호출한 부분에 적용, 반드시 초기화해야

        Console.WriteLine($"[1] {num}"); // [1] 1234

    }

 

    static void Main()

    {

        int num; // [A] 변수를 반드시 초기화할 필요 없음

 

        Do(out num); // 반환형 매개 변수 전달 방식

 

        Console.WriteLine($"[2] {num}"); // [2] 1234

    }

}

</코드>

<실행>

[1] 1234

[2] 1234

</실행>

 [A]번 코드처럼 지역 변수의 값을 초기화하지 않고 특정 메서드에서 초기화하는 형태가 있습니다. 이런 경우에는 ref를 사용해도 되지만 out 키워드를 사용할 수가 있습니다.

[B]번 코드에서 1234로 초기화하면 ref와 동일하게 Main 메서드의 num 지역 변수가 1234로 초기화 됩니다.

[1]번 코드에서는 Do 메서드에서 초기화된 1234가 출력되고, [2]번 코드영역에서는 Main 메서드의 num 변수가 1234로 이미 초기화되었기에 1234가 출력됩니다.

이처럼 out 키워드를 사용하는 방식은 ref와 동일하지만, 어차피 특정 메서드에서 초기화할 경우라면 전달할 때 초기화하지 않고 전달해도 됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

감사합니다.

 

Comments


Comments are closed